import { defineStore } from "pinia";
// 你可以任意命名 `defineStore()` 的返回值，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。
// (比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useUserStore = defineStore("user", {
  // 大多数情况下，state都是你的 store的核心
  state: () => {
    return {
      userInfo: 1,
      count: 1
    };
  },
  // getter 完全等同于store的state的计算值，使用的时候推荐使用箭头函数，并且它将接受state作为第一个参数。
  getters: {
    doubleCount: (state) => state.count * 3,
    // 同样有时候也可以通过 this 访问到整个 store 实例
    doubleCountPlusOne() {
      return this.count + 1;
    },
  },
  // action 相等于组件中的 methods, actions里面也可以通过 this访问整个 store实例
  actions: {
    setUserInfo(userInfo) {
      this.userInfo = userInfo;
    },
    async getData() {
      // 可以在这里里面直接异步操作，比如请求数据
      await new Promise((resolve) => setTimeout(resolve, 1000));
    }
  },
});